Method, device, and program for managing a flash memory for mass storage

ABSTRACT

The invention relates to a method for controlling a flash memory ( 9 ), which is comprised by a secondary unit of a communications device ( 2 ) which can be connected to a host ( 1 ) and, for mass storage, is written with data (SS 1 , SSN, SS 1 N, SA, BE, S 1 N, S 1 ML) to be stored. According to the invention, the flash memory ( 9 ) is subdivided into blocks ( 10 ) which each comprise storage units (S 1 -SN), and a storage unit (SS 1 ) that has been written to can only be written to again if, before writing to the storage unit (SS 1 ), all the storage units (S 1 , S 2 , SS 1 , SN) of the block ( 10 ) of the storage unit (SS 1 ) to be written to are erased. The flash memory ( 9 ) is controlled in such a way that at least some storage units (S 1 -SN) which are to be written to and the data (SG, SS 1 N, SAI, BEI, S 1 MLG) of said units is unchanged after being written to as compared with before being written to are neither erased nor written to, and at least some erased storage units (S, SG, SDG, SMG) which are to be written to and the data (SG) of said units is changed after being written to as compared with before being written to, are written to with the data to be stored (SS 1 N, BEI, S 1 NI) without being erased again.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is the United States national stage under 35 U.S.C.§371 of PCT International Application No. PCT/EP2013/003447, filed onNov. 15, 2013, and claiming priority to German Application No. 10 2012022 728.0, filed on Nov. 21, 2012.

BACKGROUND OF THE INVENTION

1. Field of the Invention

Embodiments provide methods for managing a flash memory that iscomprised by a communication device that can be connected to a host andonto which data to be stored are written for mass storage. The inventionfurther pertains to a computer program product for executing such amethod.

2. Background of the Related Art

Mass storage devices can be a USB memory stick (USB: Universal SerialBus), memory cards, e.g., for digital cameras, mobile telephones, ormulti-media playback devices, or in the form of an SSD (SSD: Solid StateDisk). A mass storage device includes a unit with the function of amemory controller and one or more non-volatile memory chips. Memorychips can be so-called flash EEPROM (Electrically Erasable ProgrammableRead-Only Memory) semiconductor memories, which need no power supply tomaintain stored information. There are various flash types, which differdepending on the architecture and memory method chosen. Architecturehereinafter is understood to mean the arrangement of storage cells inthe memory chip. The chosen memory method hereinafter is understood tomean the number of voltage levels used for storage within a storagecell. Examples of flash types are NOR Flash, NAND SLC (Single-LevelCell), or NAND MLC (Multi-Level Cell).

In order to write data to the flash memory chips, also known as flashmemory, the storage units to be written to must first be erased. Erasingthe individual storage units, each of which includes at least onestorage cell for storing one bit that can have the logical value “0” or“1”, is possible only in areas larger than the written areas, so calledblocks, also called erase blocks. A block hereinafter is defined as thesmallest volume in bytes on the flash memory that can be erased only asa unit. One block includes 2^(z) bytes (z>13). Typical block sizes forstoring data in kbytes are 8, 16, 32, 64, 128, or 256 kb. The unit forwriting to or writing on storage cells of the flash memory that issmaller than a block, also called a write unit or page, is defined asthe smallest volume in bytes on the flash memory that can only bewritten as a unit. The size of the blocks, also called erase units, andof the write units depends on the type and size of the flash EEPROM. ANOR flash has block sizes between 8 kb and 256 kb, typically 64 kb,wherein a write unit is 1 byte. Smaller NANO flash memories areavailable with a block size of 16 kb for a write unit of one page with512 bytes. Larger NAND flash memories with 128, 512, or 2048 kb blocksizes use pages with a (page) size of 2, 4, or 8 kb. The maximumpossible number of erase and write operations per unit is limitedaccording to technical factors and depends on the type of flash memory.Erasing sets the individual bits in the memory chip to the value of “1,”while writing sets the bits to the value of “0.” In order to achieveuniform “wear” and lifespans of the individual memory locations, allbits are programmed to the value of “0” before erasing, so that they canthen be set to the value of “1” when erasing occurs. Thus, smaller NANDflash memories are written in write units with 512 bytes while onlyerased in blocks of 16,384 bytes (16 kb). The smallest data volume usedby the host or host system when writing depends on the size of a sector,which is defined as the smallest unit processed all at once in a host'sor host system's file system. A working memory and/or flash memory isable to process, at least in principle, a sub-area of this smallest unitof a sector. Sectors include memory sizes of 2^(z) bytes with z>3,typically 512 bytes. If one wishes to equip a USB mass storage device,such as a USB memory stick, with flash memories, one encounters theaforementioned problem of asymmetrical memory sizes for erasing andwriting, because common file systems, such as FAT (File AllocationTable), FAT32, etc., use sectors with a 512 byte size, which correspondsto the size of the write unit in a smaller NAND flash memory.

BRIEF SUMMARY OF THE INVENTION

For uniform distribution of the erasing and writing operations acrossall blocks, expensive memory controllers not only have controlcapabilities for controlling the necessary erasing and writingoperations. Instead, these memory controllers have control capabilitiesfor reading, erasing, and writing data into units suitable for thesedata, including error correction, for uniform distribution of theerasing and writing operations across all blocks in the memory chip(so-called wear leveling), for managing defective blocks and, ifnecessary, a method for “refreshing” the stored data. In this case, inorder to implement the aforementioned processes, the memory controllerneeds a table that it uses to manage and link the logical units that areaddressed to a host using an interface of the memory controller and thephysical units used in the flash memory. In more complex memorycontrollers, additional information from higher layers according to theOSI 7-layer model (Open Systems Interconnection Reference Model)—fromthe file system used in the host, for example—is used to manage thememory controller. As an example, the host informs the memory controllerabout the possible erasure of logical data blocks using a specialcommand (TRIM command, see WO 2012/062233).

As long as the volume of data to be stored and the update frequency areless than is the case for main applications of mass storage devices, forexample when a flash memory is used as the auxiliary system for acommunication device that can be connected to the host for mass storageof data, the mass memory function can be implemented without difficulty.In this case, the separate memory controller of the mass storage devicewith the aforementioned expensive control method and a table used tolink the addressed logical units on the interface to the host with thephysical units used in the flash memory can be omitted.

FIG. 1 shows a communication device 2 that is connected to a host 1 andon which a flash memory 9 as a mass storage device is used not as themain data storage system but as an auxiliary system. The communicationdevice has an operator terminal in the form of a keyboard 3, whereinindicated operating statuses of the communication device 2 are displayedto a user on a display 4. Entries of commands via the keyboard and/orother operating elements as well as displays of the operating status ofthe communication device 2 on the display 4 represent the main functionof the communication device 2. The flash memory 9 is used on thecommunication device 2, for example, to store configuration data and/orvoice-dependent text that are to be displayed on the display 4. Forexample, display text in different languages, e.g., German, English,French, etc., for corresponding output text can be placed in the flashmemory 9, wherein a user chooses a certain language, such as German,when configuring the communication device 2. The display texts in thelanguages other than German are then stored on the flash memory 9 as amass storage device, although they are not used in that configuration.

FIG. 2 shows a simplified implementation of the function of a massstorage devices. The “NOR Flash” flash memory 9 has no memory controllerof its own, but instead is managed through a main processor 6, alsocalled a CPU (Central Processing Unit). The main processor 6 receivescommands intended for the flash memory 9 from the host 1 and performsreading, writing, or erasing operations. To establish the functionalityof the main processor 6, it is connected to a program memory 8 and aworking memory 7, for example RAM (Random Access Memory). The display 4and keyboard 3 are connected to the main processor 6. The host 1 isconnected to the main processor 6 through a host interface 5, which inthe case of the communication device 2 shown in FIG. 2 is located in thecommunication device 2. The storage units and/or memory areas/memorysectors on the flash memory 9 addressed by the host 1 are addresseddirectly on the flash memory 9 without converting logical into physicalunits.

Because there is no conversion when addressing logical units on the host1 into physical units on the flash memory 9 using a separate memorycontroller, sectors of the file system on the host 1, i.e., sectors onthe host 1, that should be written into the flash memory 9 are writtento the positions in the flash memory 9 where the host 1 has provided forthese sectors to be written.

A simple method for storing the data from the host 1 in the flash memory9 is shown at various points in time in the direction of the arrowdesignated “t” in FIG. 3. In a block 10 of the flash memory 9 there arestorage units in the form of memory sectors S1 to SN, in each of whichone sector 1 to N is saved at a point in time t1. To write to the blocks10 with a new sector SS1 from the host 1, the sectors 1 to N from block10, stored in the storage units S1 to SN, are copied 11 into the workingmemory 7. The sectors 1 to N stored in the block 10 at the point in timet1 are saved into the working memory 7 at a point in time t2. The block10, in which the new sector SS1 to be stored is located, must be erasedbefore this sector SS1 is written to. When this occurs, the data fromthe storage units that are not affected by writing in the block 10 thatis to be written to must not be changed and must remain stored. Forthis, the data in the form of sectors 1 to 10 from the complete block 10are loaded 11 into the working memory 7. Then the working memory 7 ischanged 13 at point in time t4 by having the new sector SS1 written toit.

After the sectors 1 to N are copied into the working memory 7, the block10 is erased 12 at point in time t3. After the blocks 10 in step 12 areerased, only erased storage units with erased storage cells SG remain inthe block. At point in time t5, the completely erased block 10 isprogrammed 14 with the data stored in the working memory 7, includingthe new sector SS1. At point in time t5, the block 10 is thus programmedwith the data content from sectors 1 to N, wherein one of the sectors isreplaced by the new sector SS1. In order to write one sector into theflash memory 9, a block 10 must be completely erased and N sectors inthe flash memory 9 must be programmed, wherein N represents not only thelast sector in block 10 but also the number of sectors in the storageunits S1 to SN per block 10 to be programmed. The operations “copy thesectors 1 to N to the working memory 7, 11” and “program the new sectorSS 1 in the working memory 7, 13” take only a fraction of the timeneeded for the operations “erase block 10, 12” and “program the sectors1 to N in the block 10, 14.” When listing all that is involved instoring data from host 1 into the flash memory 9, the operations 11 and13 can thus be omitted.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1: a typical communication device that includes a flash memory 9,

FIG. 2: the typical communication device shown in FIG. 1, wherein theflash memory is managed by a main processor that is connected to a hostthrough an interface,

FIG. 3: a typical method for storing a sector in a flash drive,

FIGS. 4 a and 4 b: a typical method for storing multiple sectors in aflash memory,

FIGS. 5 a and 5 b: a first embodiment of the invented method for storingmultiple consecutive sectors in a flash memory,

FIGS. 6 a and 6 b: another embodiment of the invented method for storingspecific sectors of a host in a flash memory,

FIGS. 7 a and 7 b: another exemplary embodiment of the invented methodfor rewriting specific sectors of a host in a flash memory by means ofinversion, and

FIGS. 8 a and 8 b: each shows a table for comparing the methodsillustrated in FIGS. 4 to 7, referencing the number of erasureoperations (FIG. 8 a) and referencing the number of programmingoperations (FIG. 8 b).

DETAILED DESCRIPTION OF THE INVENTION

While in FIG. 3 only one sector SS1 is written to the flash memory 9,FIGS. 4 a and 4 b show the case in which multiple sectors SS2, SS3 arewritten by the host 1 into block 10 of the flash memory 9. In FIG. 4 a,the status of the block 10 is assumed to be as of the point in time t5according to FIG. 3. When the sector SS2 is written into the block 10,the sectors 1 to N are recopied 11 from the block 10 to the workingmemory 7, so the memory status in the working memory 7 at the point intime t6 corresponds to the point of time t4 according to FIG. 3. Next,the block 10 is erased again at the point in time t7, so that all of thestorage units exist in the block 10 as erased storage units SG. The newsector SS2 is programmed 13 next to the new sector SS1 in the workingmemory 7, wherein at the point in time t8 in the working memory 7, thenew sectors SS1 and SS2 are stored and replace the previously storedsectors of the sectors 1 to N. Next, the sectors 1 to N, including thenew sectors SS1 and SS2, are programmed 14, 15 into the erased block 10,so that at the point in time t9 the block 10 contains the new sectorsSS1 and SS2 together with the sectors 1 to N, see FIG. 4 b. Then, thetotal content of the block 10 is copied 11 back into the working memory7, and after that the block 10 is completely erased at the point in timet11. The stored content of the working memory 7 at the point in timet10, including the new sectors SS1 and SS2, is increased when the newsector SS3 is stored at the point in time t12. In addition to thesectors 1 to N, at the point in time t12 three of these sectors arereplaced by the new sectors SS1 to SS3. The storage content of theworking memory 7 is programmed 14, 15 by programing the updated sectors1 to N in the erased block 10, wherein in the block 10 the sectors 1 to10 are programmed, including the new sectors SS1 to SS3 in place ofthree sectors out of the sectors 1 to N. If the host 1 wants to writemultiple sectors 1 to N into the flash memory 9, the steps shown in FIG.3 must be repeated for each of the sectors SS1, SS2, SS3 to SSN to bewritten. This repetition of the steps or operations 11, 12, 13, and 14is necessary because the flash memory 9, like the main processor 6, hasno knowledge of the logical use of individual sectors, and therefore allsectors 1 to N in the storage units S1 to SN must be handled in the sameway.

If the host 1 wants to write a certain number of sectors M into theflash memory 9, a block 10 in the flash memory 9 has to be erased Mtimes and N sectors have to be programmed into the flash memory 9 Mtimes. If the size of each of the storage units S1 to SN matches thesize of each of the sectors 1 to N, for a sector size of 512 bytes and ablock size of 16 kb the following numbers result for the operationsrequired for storage:

-   -   4-kb file means 8 sectors means erase, 12, a block 8 times, and        program, 14, 8×32=256 sectors    -   10-kb file means 20 sectors means erase, 12, a block 20 times,        and program, 14, 20×32=640 sectors    -   16-kb file means 32 sectors means erase, 12, a block 32 times,        and program, 14, 32×32=1024 sectors.

If the host 1, for example, writes the file allocation table (FAT) forthe file system of the host 1 into the flash memory 9, and this tableincludes 30 sectors, for example, a block must be erased 30 times and30×32=960 sectors programmed. Correspondingly, if the host 1 adds to andrewrites the file allocation table FAT of the file system, with 30sectors as in the preceding example, a block 10 is erased again 30 timesand 30×32=960 sectors are programmed. The method described in FIGS. 3, 4a, and 4 b, in which data are loaded from a complete block into theworking memory, the storage units to be written to are changed, thecomplete block is erased and then newly written with the datatemporarily stored in the working memory, is provided, for example, withthe implementation of a mass storage device that is supplied with themicrocontroller (PIC, PIC24, PIC32, etc.) from the Microchip company.

In order to reduce the high amount of effort required to erase blocksand program sectors that is associated with the method illustrated inFIGS. 3, 4, and 4 a, intermediate memories (caches) can be used, inwhich data to be written are first stored until they are later writtento the flash memory. If, in the interim period between storage andwriting of the flash drive, additional data to be written for the sameblock arrive in the intermediate memory, these data can be combined withthe temporarily stored data, and the affected block only has to beerased and written once.

Another alternative for preventing numerous block erasures and sectorprogramming procedures as shown in FIGS. 4 a and 4 b, consists in theuse of complex file systems such as the TFFS (True Flash File System).With the TFFS, data are distributed in the flash memory such thaterasure and rewriting are not necessary until the affected blockcontains no data, i.e., is not in use. In this case, however, it isnecessary to “translate” the original file system, e.g., FAT, FAT32, tothe file system used on the flash memory. If such changed data arewritten to the flash memory, these data are written by the Flash FileSystem into a free, already erased block, and the old data marked as“expired” at the old location. The logical allocation of the data to theactual physical storage location in the flash memory is accomplishedusing translation tables. A block cannot be erased until all 10 data inthe block are marked as “expired.” Erasure then occurs, if the memorycontroller that contains and operates the translation table is not busywith reading, erasing, and writing operations.

While the data to be written to the working memory are temporarilystored in an intermediate memory, direct writing of data to the flashmemory is delayed so that additional data can be accumulated before allaccumulated data are programmed together into the flash memory. TheFlash File System TFFS writes the data immediately to the flash memorybut delays erasure. Given the high technical outlay of having anintermediate memory or a separate memory controller, which requires atranslation table to link the logical units addressed to the host'sinterface with the physical units used in the flash memory, an easiersolution is to omit the intermediate memory or separate memorycontroller, with, of course, the additional cost of the additionalexpense for block erasures and sector programming.

An objective of the invention is to provide a method for managing aflash memory, with which data from a host can be stored easily andefficiently in the flash memory. In particular, the number of erasureand writing operations required for storage should be reduced withoutthe need to use an intermediate memory and/or separate memory controllerwith a translation table. By providing a method for managing a flashmemory, in which the number of erasure and writing operations requiredfor storage is easily reduced, and by providing a computer programproduct for executing such a method, response times when storing data inthe flash memory are reduced and the lifespan of the flash memory islengthened.

According to the invented method for managing a flash memory that iscomprised by a communication device that can be connected to a host andonto which data to be stored are written for mass storage, the flashmemory is divided into blocks that contain storage units. A writtenstorage unit can only be rewritten if all storage units in the block ofthe storage unit to be written to are erased before the storage unit iswritten to. The flash memory is managed in such a way that at least someof the storage units to be written to, whose data are the same afterwriting as they were before writing, are neither erased nor written to,and at least some of the erased and to be written storage units, whosedata are different after writing compared to before writing, are writtento with the data to be stored without re-erasing. Such management of theflash memory is made possible by using the flash memory as an auxiliarysystem of the communication device, wherein a separate memory controlleris not necessary. Execution of the invented method also does not requirean intermediate memory and/or memory controller with a translationtable. Management of the flash memory therefore does not require anyinformation about the logical content of the host's data to be writtenother than the bit level, in which the individual data bits can have acontent with the value “0” or “1.” One byte consists of eight bits. Eachbit can have the value of “0” or “1.” The eight bits of an erased byteall have the value of “1,” so that the byte has the binary value of“11111111.” This value corresponds in binary notation to the value“0b11111111” or in hexadecimal notation to the value “0xFF.” It istherefore possible for management of the flash memory to be based simplyon whether data to be written have bytes with a value unequal to “0xFF.”This information can result from analysis of values at the level ofindividual bits, i.e., at the bit level. Alternatively or additionally,this information can result at the level of individual bytes, i.e., atthe byte level. If a byte has the hexadecimal value “0xFF,” all of thebits in the byte have the value of “0.” To compare the values of thedata on the flash memory with those of the data to be written, it issufficient for the content of the data to be analyzed at the byte levelor below it, i.e., at the bit level. Because areas of the flash memorythat have been erased and not rewritten after erasure always have thevalue “0xFF,” value information at the byte level is adequate fordetermining whether all or part of the erased area is to be overwrittenwith other values for the individual bytes of the data to be written.The flash memory management must therefore be based simply ondistinguishing whether the value of each byte of data to be writtendiffers from the value of each byte of the erased and to be writtenstorage units. If the data to be written differ from the values of theindividual bytes of the data in the erased storage units, re-erasure ofthe storage units can be eliminated and the data can be written in thestorage units to be written to. However, if the data to be written donot differ from the data in the storage units to be written to, storagein the storage units to be written to can be omitted, because the valuesof the individual bytes of the storage units to be written to are thesame as the values of the individual bytes of the data to be written tothe storage units. In this way, by simply comparing the correspondenceof the content of the data to be written with the content of the storageunits to be written to at the byte level, unnecessary erasure iseliminated and the storage units to be written to are then written toonly if writing is necessary based on the content of the data to bewritten differing from the content of the storage units to be writtento. Comparing the content of the data to be written with the content ofthe storage units to be written to can be done with no intermediatesteps immediately before the data are stored in at least some of thestorage units to be written to.

A flash memory can be a Flash EEPROM semiconductor memory, for example.Flash memory types such as NOR Flash, NAND-SLC, or NAND-MLC can be usedas Flash memories. The communication device can be a computer, mobiletelephone, tablet PC, PDA (Personal Digital Assistant), smart phone, orother communication device that contains the flash memory. The flashmemory can be used as an auxiliary system, thereby eliminating anintermediate memory or memory controller, as in the communication deviceshown in FIGS. 1 and 2, for example, or can be used as the main systemof a communication device, wherein an available intermediate memoryand/or memory controller is included as a separate assembly.

The communication device cannot be a terminal, but rather thecommunication terminal itself can act as a server, in the form of adesktop PC or laptop, for example. Because, for data that are the sameafter writing as before writing, neither erasure nor writing to thestorage units to be written to occurs, and because, for all or part oferased and to be written storage units, re-erasure is eliminated andonly data that differ from the data on all or a portion of the erasedstorage units are written, unnecessary erasure and/or writing operationsare eliminated. In this way the number of erasure andwriting/programming operations needed to store data in the flash memoryis reduced, which is expressed in a lower reaction time for storage andan increased lifespan of the flash memory. Because any delay of theerasure and/or writing operations is limited to comparing the content ofthe data to be written with the content of the storage units to bewritten to at the individual byte level, and an intermediate memoryand/or a memory controller separate from the main processor of thecommunication device can be eliminated, the response time for storingdata is reduced, maximizing the overall performance of the flash memory.

In one embodiment, the communication device is connected to the host viaan interface, and information about the volume of data to be transferredfrom the host to the flash memory is called up by the communicationdevice from the interface and used to manage the flash memory. Evenwithout an intermediate memory or a memory controller, the host'sinterface has information about the volume of data to be transferredfrom the host to the flash memory. These data are called up from theinterface and used to manage the flash memory, wherein storage unitsthat will not have new data written to them in a writing process, aftererasure of the block in the flash memory will not be rewritten with thedata stored in the storage unit, but rather will be left in erasedstatus until the new data are to be written to the storage units in alater writing process. Using the information contained in the interfaceregarding the volume of data to be stored, it is then possible, by meansof a writing process, to reserve storage units that are erased for thearrival of new data, so that they are not overwritten with data alreadystored in the storage unit.

Preferably, the information about the data to be transferred from thehost to the flash memory is in a mass storage protocol, in particular aUSB mass storage protocol. The mass storage protocol has information,for example, about how many of the host's sectors in the flash memoryneed to be written to. This information is passed on to a writingfunction of the flash memory. The writing function then preventsjust-erased storage units from being written to with data that will beoverwritten in a subsequent writing process. These storage units thusremain in erased status, so that only new data are programmed in theflash memory, without having to re-erase the storage units to beprogrammed before new data are written to them. The information aboutthe data to be transferred from the host to the flash memory isspecifically in a USB mass storage protocol. The information istherefore in the host's interface independently of any intermediatememory or memory controller.

In another embodiment, information about the number of consecutivestorage units to be written to, in which the data to be transferred areto be written, is provided by the interface. With the information aboutthe number of storage units to be written to consecutively, adjacentareas of a block on a flash memory to be written with new data can beheld or reserved for consecutive writing operations. Because the size ofthe data content of a sector belonging to the host must be known in theinterface for transferring the data, the number of storage units to bewritten to consecutively can be calculated just from the volume ofsectors to be written to in the flash memory.

In an other embodiment, in addition to the content of the first storageunit to be written to, additional information about a number of storageunits following the first storage unit is provided by the interface.Thus, if the host wants to write to a certain number of sectors in theflash memory, whose size corresponds to that of a certain number ofstorage cells in a storage unit, the host gives the command via theinterface to the flash memory to write to the first sector in the flashmemory with the additional information that when there are M sectors tobe written to, M−1 sectors remain after them. The block of the flashmemory in which the first sector is to be written to a portion of thestorage cells in the storage unit of the block must be erased before thesector is written, because only complete blocks can be erased. The datafrom the storage units that are not affected by writing as part of awriting process in this block must not be changed during the writingprocess and must remain stored. To do this, the data from the entireblock are temporarily stored, for example in a working memory of thecommunication device, the data to be written are attached to thetemporarily stored data by replacing a portion of the temporarily storeddata, the entire block in the flash memory is erased and reprogrammedwith the temporarily stored data that include the data to be written.Here only data that must remain unchanged are programmed into the flashmemory, i.e., the sectors before the first sector S, as well as thesectors starting with the sector S+M, wherein the first sector S itself,which already contains new data, is also programmed. When the subsequentsectors S+1 to S+M−1 are transferred by the host, these sectors areprogrammed in the already-erased available areas in the flash memory. Inthis way, those areas of the flash memory to be written to, whose dataare the same after writing as before writing, are neither erased norwritten, but rather reserved for those writing processes that are to beused to write these areas with new data. Without information about thecontent of the data to be written in the flash memory, only with theinformation about the volume of the data to be written is it possible tosave erasure and writing processes without losing stored data.

In one advantageous embodiment, data to be written that are transferredby the host into at least one storage unit of a block in the flashmemory are inverted before the at least one storage unit is written. Inthis way, in file systems that use the hexadecimal value “0x00” forunused storage units, the value “0xFF” can be generated by inversion,which corresponds to the value of erased, unwritten storage units in theflash memory. The inversion causes every bit with the value of “0” to betransformed to the value of “1” and vice versa. In this way, unusedareas of the file system that have the value “0x00” become areas withthe value “0xFF.” Because the value “0xFF” of a byte in the flash memorycorresponds to the erased, not written status, the unused areas of thefile system must no longer be programmed after the inversion. Only whenthe content of the file system in this area is changed and containsvalues other than “0x00” must this area also be programmed in the flashafter the inversion. Then, however, no erasure is necessary beforeprogramming, because the erased area still contains the erased byteswith the value “0xFF” and can be overwritten without prior erasure. Thevalue “0” corresponds to the hexadecimal value “0x00,” wherein, forexample, both copies of a file allocation table FAT have the value “0”at the unused locations. Unused parts of the file system are oftenwritten to without being changed. For each writing process in the flashmemory, writing means an erasure and new programming of the storageunits. By inverting the unused areas of the file system, the value ofthese areas is inverted into the value of erased, unwritten areas of theflash memory. Because of this adaptation of the values of unused areasof the file system to the values of erased storage units, programming ofthese areas is no longer necessary. This exemplary embodiment thereforeincludes an additional reduction of erasure and/or writing operations.

In another embodiment, for multiple storage units to be written to, inwhich the data to be transferred are to be written, the data for allstorage units are inverted. This embodiment, of course, has thedisadvantage that, for used areas of the file system that do not havethe value “0x00,” one must invert in order to be able to use these datawhen reading from the flash memory. However, the exemplary embodimenthas the advantage that the flash memory requires no information aboutthe logical content of the data to be stored. The “data inversion”operation, like the operations “copy sectors 1 to N,” 11, see FIGS. 3, 4a, and 4 b and “program new sectors in the working memory, 13, see FIGS.3, 4 a, and 4 b,” is omitted, because they require only a fraction ofthe time needed to erase the block 12 and program the block 14.

Correspondingly, in a further embodiment, unused bytes of the host'sdata that are to be written to the flash drive have the hexadecimalvalue 0x00 when placed in the interface, have the hexadecimal value 0xFFof an erased byte in the flash memory after inversion, and, instead ofwriting the hexadecimal value 0xFF into an erased storage unit, theerased storage unit is kept in its erased status without re-erasing.

In addition to the method for managing a flash memory, this inventionalso includes a computer program product for executing such a method.The computer program product can consist of software, for example. Thecomputer program product can be stored as binary data on a floppy disk,DVD, CD-ROM, or memory card. The computer program product can alsoconsist of printed source code.

The invention also includes a communication device on which the computerprogram product is installed. The communication device has thecorresponding functions and advantages of the invented method formanaging a flash memory and can be a desktop PC, laptop, server,landline telephone, mobile telephone, smart phone, or tablet PC. Thehost to which the communication device can be connected can be a serveror another host. In addition, the host can be a group and/or network ofnetworkable computers in the form of a host system. The host can also beon the Internet or an Ethernet.

Additional exemplary embodiments and also advantages of the inventionwill be explained below with reference to FIGS. 5 to 8. For betterillustration, a scale or true proportional representation is not used inthe figures. Unless specifically stated otherwise, the same referencenumbers in the figures denote the same components with the same meaningas the references mentioned in FIGS. 1 to 4 b that have already beendiscussed.

FIGS. 5 a and 5 b show the invented method in a first embodiment inwhich multiple consecutive sectors SSN, SS1N, SSMN are to be stored inthe block 10 of the flash memory 9. At the point in time t1, sectors 1to N are stored in the storage units S1 to SN of block 10. After that,the sectors 1 to N are copied 11 into the working memory 7, so that atthe point in time t2, the sectors 1 to N are stored in the workingmemory 7. At the point in time t3, the block 10 is entirely erased, sothat each of the storage units S1 to SN is in erased status SG. Thesteps of the method from the points in time t1 to t3 are the same asthose shown in FIG. 3. M sectors are to be programmed by the host 1 intothe flash memory 9. These M sectors are divided into the sector S new,SSN, the sector S+1 new, SS1N, additional sectors, and the sector S+M-1new, SSMN, wherein M is a whole number. Instead of writing only thefirst sector SSN to be written to the working memory, as shown in FIG. 3at point in time t4, through the interface 5 the first sector SSN to bewritten and a piece of information IN1 are sent to the communicationdevice 2, indicating that M−1 sectors to be written to the flash memory9 are still to come. At the point in time t20, only the first sector SSNis stored 21 in the working memory 7, wherein the entire content of theworking memory 7 is not programmed into the erased block 10 at the pointin time t20. Instead, the sectors 1 to S−1, S as a new sector SSN, andthe sectors S+M to N are programmed 22. At the point in time t21, thestorage units located between the sector SSN and the sector S+M areerased. This erased area of the block 10, SSG, is available forsubsequent writing operations and/or writing processes used to write newdata from the host into the block 10. The communication device 2 or thecontroller of the flash memory 9 thereby use the piece of informationIN1, that M−1 sectors remain to be written into the flash memory 9, forwriting to the block 10 in such a way that the sectors SS1N to SSMN notyet written to the block 10 of the flash memory 9 are reserved as theerased area SSG in the block 10. At the point in time t22, the workingmemory 7 is written to with the next sector S+1 new, SS1N, to bewritten, wherein through the interface 5, together with the next sectorSS1N to be written, the piece of information IN2 has been sent to thecommunication device 2 indicating that M−2 sectors remain to be writtento the block 10. The piece of information IN2 is sent to the controllerof the flash memory 9, which is managed by the main processor 6 in thecommunication device 2 shown in FIG. 2. Therefore, only the new sectorS+1 new, SS1N, is programmed 24 into the block 10, whereby the block 10has stored the second new sector SS1N together with the first new sectorSSN at the point in time t23. According to the chronological sequencethat is represented in FIGS. 3, 4 a, 4 b, 5 a, 5 b, 6 a, 6 b, 7 a and 7b as a downward-pointing arrow labeled t for time, the method forstoring individual new sectors continues from the interface 5 to theworking memory 7 and from there to the block 10, as shown by theindication “etc.” and the arrow 25 in FIG. 5 a. As soon as the lastsector SSMN to be stored is able to be written to the block, this sectoris stored 21 into the working memory 7, and the last new sector S+M−1new, SSMN, to be stored in the flash memory 9 is stored in the lastremaining storage unit, which is in erased status SG, in the area oferased units SSG. With the last of the M sectors that are to be storedconsecutively, no additional information is sent from the interface tothe controller of the flash memory 9, because no such information isnecessary. On the basis of the first notification IN1, that M−1 sectorsare to be written to the block 10 of the flash memory 9, the reservederased area SSG is allocated in such a way that this erased area isadequate for all of the M sectors to be written to the block 10. In thisregard, in another embodiment, it is necessary to send only the piece ofinformation IN1, that M−1 sectors remain to be written to the memory,while the piece of information IN2, indicating that M−2 sectors are tobe written to the flash memory 9, can be omitted.

If the host 1 wants to write a certain number of consecutive sectors Minto the flash memory 9, and these sectors to be written are all to bewritten to storage units of a block 10, then the block 10 in the flashmemory 9 has to be erased once and N storage units have to be programmedinto the flash memory 9. If the consecutive sectors are distributed tomultiple blocks, as is the case when the sum of the numbers S and M isgreater than the number N of storage units in the block, then all blocksB that are to be used for storage must be erased once, and BxN sectorsare to be programmed into the flash memory 9. In this regard it isassumed that the data volume of one storage unit corresponds to the datavolume of one sector.

At a sector size of 512 bytes and a block size of 16 kb, the followingoperations are necessary for writing to the flash memory 9:

-   -   4-kb file means 8 sectors (in one block) means erase a block        once and program 32 sectors,    -   4-kb file means 8 sectors (in two blocks) means erase a block        twice and program 2×32=64 sectors,    -   10-kb file means 20 sectors (in two blocks) means erase a block        twice and program 2×32=64 sectors,    -   16-kb file means 32 sectors (two blocks) means erase a block        twice and program 2×32=64 sectors.

If, for example, the host 1 writes the file allocation table FAT of thefile system and it consists of 30 sectors, then as a maximum, if the 30sectors are distributed to 2 blocks, a block must be erased twice and2×32=64 sectors must be programmed. If the host expands the FAT of thefile system and rewrites it with 30 sectors, as in the precedingexample, then again a block must be erased twice and 2×32=64 sectors areto be programmed in the flash memory 9. FIGS. 6 a and 6 b show theinvented method in a further embodiment, in which specific sectors ofthe host 1 will be written into the flash memory 9. As illustrated inFIGS. 3 and 5 a, the block 10, which at point in time t1 includes thesectors 1 to N in the storage units S1 to SN, is entirely copied 11 intothe working memory 7, and then the block 10 is entirely erased at pointin time t3, so that all storage units S1 to SN in the block 10 are thenin erased status SG. The host 1 wants to write a FAT or a list with Msectors into the flash memory 9. The host issues a command through theinterface 5 to the controller of the flash memory 9 to write the firstof the M sectors, which includes a first sub-area SA and a secondsub-area U, to the block 10 with the additional information IN1,indicating that M−1 sectors remain to be stored. The piece ofinformation IN1 added to the sub-areas SA and U of the first sector tobe written is generated by the interface 5 using information from thehost 1 on how many sectors are to be written. In contrast to the firstembodiment of the invented method according to FIGS. 5 a and 5 b, thedata contained in the sub-areas SA and U to be stored, of the firstsector to be stored, are inverted 31. Here the first sub-area SA of thefirst sector to be written is inverted into the first sub-area SAI,wherein the unused second sub-area of the first sector U to be stored,which contains the hexadecimal value 0x00, inverts into the secondsub-area G of the first sector to be written, which after the inversionhas the hexadecimal value 0xFF. The first sector to be written, invertedin this manner, is then programmed into the working memory 7 as theinverted first sub-area SAI and as the second inverted sub-area G at thepoint in time t30. Next, corresponding to the programming step 22 inFIG. 5 a, the sectors 1 to S−1, the inverted sector S to be written withthe sub-areas SAI and G and the sectors S+M to N are programmed 32 intothe block 10. In this case, only the data that must remain unchanged areprogrammed into the flash memory 9, which involves all sectors thatprecede the sector S, as well as the sectors that follow the sector S+M,as well as the first sector to be written itself, which contains the newinverted data. At the point in time t31, in the block 10, which containsthe unchanged sectors 1 to S−1 and S+M to N, there is an erased area SMGavailable for the host's additional sectors to be stored.

With respect to the first sector to be stored, only data that differfrom the value 0xFF for erased data in the storage units of the block 10are stored in the block 10. Then only the first sub-area of the firstsector to be stored, SAI, is stored in the block 10, and the secondinverted sub-area G of the first sector to be stored is not programmedinto the block 10, because its value matches the content of the erasedstorage units 0xFF. The second sector S1L that follows the first sectorto be written is a so-called “empty” sector, because the data in thissector contain unused bytes with the value of 0, which corresponds tothe hexadecimal value of 0x00. As for the storage of the first sector tobe written into the working memory 7, the sector S1L is inverted 31 andstored in the working memory 7 as the inverted sector S1L1.Additionally, the interface sends the piece of information IN2,indicating that M-2 sectors remain to be stored in the flash memory 9,to the controller of the flash memory 9. Because the second sector S1L1to be written after inversion has only the hexadecimal value 0xFF, whichmatches the content of the storage units in the erased status SG of theerased area SMG, this sector is not programmed 34 into the block 10.Instead, the block is in the same status at the point in time t33 as atthe point in time t31. Because the content of erased storage unitsmatches the content of the second sector S1L1 to be written, no datacontent is lost by not programming the inverted second sector S1L1 to bewritten.

If subsequent sectors are transferred from the host 1 to the interface5, they are programmed into the already erased area SMG in the flashmemory 9 only if they contain data that differ from unused data with thevalue of 0, which corresponds to the hexadecimal value of 0x00. As longas these sectors are “empty,” i.e., contain only bytes with 0x00, due toinversion these areas become areas in which all bytes contain the valueof 0xFF, which correspond to the content of erased storage units in theerased area SMG of the flash memory. These “empty” sectors are thereforenot programmed into the flash memory. According to the illustration inFIG. 6 b, the last sector S1ML to be stored is also a sector thatcontains only unused bytes with the value of 0. After inversion, thissector is the inverted sector S1MLI with the value 0xFF in the workingmemory 7 at the point in time t34. Because the inverted last sectorS1MLI to be written has the same data content as the erased area SMG inthe block 10, there is no programming step for writing the sector S1MLIto the block 10, 36. Instead, the erased storage range S1MLG of theerased area SMG matches the data content of the last inverted sectorS1MLI to be written. By inverting data from sectors to be written, whichcontain unused data, a programming step is omitted according to theinvention, because the data in erased storage units and the inverteddata from sectors with unused data match each other. Of course, in orderto use the inverted stored data, a reverse inversion is necessary, whichis another inversion, but the time and calculation effort for theinversion is negligible compared to the time and calculation effort forprogramming and can be disregarded.

FIGS. 7 a and b illustrate another embodiment of the invented method, inwhich specific sectors of the host 1 are repeatedly written into theflash memory 9. In FIG. 7 a, the initial status of the block 10 isassumed to be the status at the point in time t33 as shown in FIGS. 6 aand 6 b. After all sectors 1 to N are copied into the working memory 7at the point in time t34, which corresponds to the point in time t34 inFIG. 6 b, M sectors are to be written into the flash memory 9 again. Thefirst sector to be written includes a first sub-area SA and a secondsub-area BE, as well as a second sector S1N to be written. Theadditional sectors to be written are so-called “empty” sectors, whichcontain only unused data. The last “empty” sector to be written is thesector S+M-1, S1ML. After sending the sectors to be written to theinterface 5, 37, the interface sends the first sector to be written withthe sub-areas SA and BE as well as the piece of information IN1,indicating that M−1 sectors remain to be written, to the controller ofthe flash memory. Then the first sector to be stored, with the sub-areasSA and BE, is inverted and stored in the working memory 7 at the pointin time t35 as inverted sub-areas SAI and BEI.

Next, because the first sub-area SAI is already programmed in the block10, only the second sub-area BEI is programmed into the block 10 as therest of the first sector S to be written, wherein no erasure of thestorage units of the block 10 is necessary, 39. Thus, at the point intime t36, the previously erased area STG in the block 10 is replaced bythe inverted second sub-area of the first sector to be written BEI.Next, the second sector S1N to be written is read 40 from the filesystem of the host 1 and sent to the controller of the flash memory bythe interface 5, together with the piece of information IN2, indicatingthat M−2 sectors remain to be stored. After inversion of the data fromthe sector S1N, 31, this sector is stored as the inverted sector S1NI inthe working memory 7 at the point in time t37. Next, the second sectorto be stored is programmed in inverted form S1NI into the previouslyerased area SMB of the block 10. Thus, at the point in time t38, theinverted sub-areas of the first sector to be written, SAI, BEI, and theinverted second sector to be written S1NI are programmed into the block10. The method for reading individual sectors to be programmed with theinformation on how many sectors remain to be stored, the inversion,storage in the working memory, and programming the inverted sectors thatare occupied by not unused data, i.e., payload data, into the flashblock 10 continues until the last sector to be written is ready to beprogrammed. In FIG. 7 b, this last sector S1ML is a so-called “empty”sector, which, after inversion, 31, is programmed into the workingmemory at the point in time t38 as an inverted sector S1MLI. Because theinverted sector S1MLI has only data with the value 0xFF, which match thecontent of the erased storage unit S1MLG in the block 10, the invertedsector S1MLI is not programmed into the block 10, 36. Thus, at the pointin time t39 as compared to the point in time t33, the block 10 includesadditionally only the inverted second sub-area BEI of the first sectorto be written and the inverted second sector S1NI to be written. Theexemplary embodiment shown in FIGS. 7 a and b illustrates the case inwhich the host wants to update a FAT or list in such a way that portionswith existing data remain unchanged and additional data are added intopreviously erased areas. The areas of the block 10 that remain unchangedare occupied by the sectors 1 to S−1 and S+M to N. The erased area thatis to be occupied by additional data is the area SMG. Because the dataalready located in the flash memory 9 are partially unchanged, butinstead only previously erased areas are written with new data, theblock 10 of the flash memory 9 does not need to be entirely erasedbefore being written to. The data from the entire block 10 are loadedinto the working memory 7, the data transferred by the host for thesectors to be written are placed into the working memory 7 afterinversion and are not programmed into the flash memory 9 unless theydiffer from the erased areas of the flash memory. In the exemplaryembodiment from FIGS. 7 a and 7 b, this applies to the second part ofthe first sector to be written, BE, and to the sector S1N as the secondsector to be written. The subsequent sectors transferred by the host 1are then programmed into the corresponding already erased area SMG inthe flash memory 9 only if they contain data that differ from unuseddata. As long as these sectors are “empty,” i.e., contain only byteswith the value 0x00, due to inversion these areas become areas in whichall bytes contain the value of 0xFF, i.e., values that match the contentof erased areas of the flash memory SMG. These “empty” sectors aretherefore not programmed into the flash memory. In the method describedin FIGS. 6 and 7, there is no distinction between FAT, list, or datarange, but rather inversion takes place in the same fashion for allsectors to be written. Of course, this system has the disadvantage thatsectors containing used values that differ from the unused values are“unnecessarily” inverted, but the advantage that the controller of theflash memory requires no information about the logical content of thesectors to be written. If a memory controller has a piece of informationabout the logical content of the various sectors, equal inversion of allsectors to be written can be omitted and only the sectors whose datahave unused values of 0, which match the hexadecimal value of 0x00, areinverted.

The following examples are based on the exemplary embodiments from FIGS.6 and 7: At a sector size of 512 bytes and a block size of 16 kb, thefollowing operations are necessary for writing, assuming 32 storageunits per block, each of which can store one sector:

-   -   4-kb file means 8 sectors (in one block) means erase a block 1        time and program 32 sectors,    -   4-kb file means 8 sectors (in two blocks) means erase a block 2        times and program 2×32=64 sectors,    -   10-kb file means 20 sectors (two blocks) means erase a block 2        times and program 2×32=64 sectors,    -   16-kb file means 32 sectors (two blocks) means erase a block 2        times and program 2×32=64 sectors.

If, for example, the host 1 writes the file allocation table FAT of thefile system and it consists of 30 sectors, for example, with 20 of thosesectors containing no data (i.e., “empty”), then as a maximum, if the 30sectors are distributed to 2 blocks, a block must be erased twice and2×32−20=44 sectors must be programmed. If the host 1 expands the FAT ofthe file system of the host 1 and rewrites with 30 sectors, wherein only16 sectors contain unused data, i.e., are “empty,” then no blocks needto be erased and 20−16=4 sectors need to be programmed.

FIG. 8 a shows an overview in table form of the number of erasureoperations 50 for the method as executed in FIGS. 4 to 7, 51. It isassumed that one block has 32 storage units capable of storing onesector each. It is therefore assumed that 32 sectors can be stored inone block. For a 4-kb file, which means 8 sectors and is stored in 2blocks, 52, the usual method as executed in FIG. 4 involves 4 to 8erasure operations, 12, in each of which one block is to be erasedentirely. The reason for this is that, even when programming only oneindividual sector in the block, the entire block first has to be erased.In contrast to what is shown in FIG. 4, when executing the inventedmethod as in FIGS. 5 to 7, the block in which data are to be written iserased only once. Because the 8 sectors are to be written to 2 blocks,only 2 erasures, 54, 56, of entire blocks are required, as compared to 8erasures, 53. This means that the number of erasure operations forwriting 8 sectors into 2 blocks, 52, with the invented method is only25% of the entire block erasure operations required with the usualmethod. In the example of writing a file allocation table FAT with 30sectors to 2 blocks, wherein 20 sectors out of the 30 sectors to bewritten are occupied by unused data, i.e., are “empty,” 58, with theusual method as in FIG. 4, erasure of entire blocks is required 30times. On the other hand, in the embodiment of the invention shown inFIGS. 5 to 7, erasure of an entire block is required only twice, becausethe 30 sectors are written into 2 different blocks. Beginning with thestatus of the flash memory as in the example of writing 30 sectors to 2blocks, wherein 20 sectors contain unused data, 58, if the FAT is to beexpanded with 30 sectors, 16 of which contain unused data, i.e., are“empty,” 59, again with the usual method as in FIG. 4, entire blocksmust be erased 30 times. On the other hand, according to the inventedmethod illustrated in FIG. 5, without inversion of the data to bewritten, erasure of entire blocks, 61, is necessary 2 times, which is6.66% of the number of erasures with the usual method as in FIG. 4, 62.With the invented method as in FIGS. 6 and 7, in which the data to bewritten are inverted before programming into the flash memory, becausethere are only 4 sectors to be stored in the flash memory that containpayload data, with inversion of the data to be written, no erasure ofexisting blocks, 0, is necessary.

FIG. 8 b shows an overview in table form of the number of operations toprogram data into the working memory 7 in the block 10 of the flashmemory 9, 65, using the method as executed in FIGS. 4 to 7, 51. Theprogramming operation here corresponds to step 14 in FIGS. 4 a and 4 band to steps 22, 24, 26 in FIGS. 5 a and 5 b. The programming operationsfurther correspond to step 32 in FIG. 6 a and to steps 38, 41 in FIG. 7a. In the relevant example discussed in FIG. 8 a of a 4-kb file, meaning8 sectors, to be written to 2 blocks, 52, assuming that 32 sectors canbe written to one block as shown in FIG. 8 a, the result is 256programming operations, 66, for the usual method as in FIG. 4. Becausethe usual method requires that all 32 storage units must be erased forevery sector, 8×32=256 programming operations are necessary. Incontrast, with the invented method as in FIGS. 5 to 7, only 64programming operations, 67, 69, are needed, since each of the 2 blocksto be written to must be programmed in its entirety once, i.e. 32 times.The result for the number of programming operations, as for the numberof erasure operations, is a fourfold difference (25%) between theinvented method as in FIGS. 5 to 7 and the usual method as in FIG. 4,70. In the case of writing a file allocation table FAT with 30 sectorsto 2 blocks, wherein 20 sectors out of the 30 sectors contain unuseddata, 71, the result with the usual method as in FIG. 4 is 960programming operations (each of the 32 sectors has to be programmed 30times). In contrast to the usual method, with the invented method as inFIG. 5 and without inverting the data to be written, only 64 programmingoperations are required (each of the 2 blocks to be written to must beprogrammed in its entirety, i.e. for each of its 32 sectors). With theinvented method as in FIGS. 6 and 7, in which the data to be written areinverted before being stored in the block 10, because data that containthe same values as erased storage units are not programmed, in this caseonly 40 programming operations (64−20=44) are required instead of the 64programming operations as in the method in FIG. 5. Beginning now withthe status of the flash memory having a written file allocation tablewith 30 sectors in 2 blocks, wherein 20 sectors out of the 30 sectorscontain unused data, if this file allocation table is to be expandedwith 30 sectors, 16 of which contain unused data, 72, again with theusual method as in FIG. 4, 960 programming operations, 73, are needed.Using the invented method as in FIG. 5 and without inverting the data,64 programming operations are necessary (74). 64 programming operationscompared to 960 programming operations as in the method in FIG. 4corresponds to a ratio of 6.66%, 75. An even greater reduction inprogramming operations results from comparing the usual method shown inFIG. 4 with the invented method from FIGS. 6 and 7. Because 16 sectorsout of the 30 sectors to be written contain unused data and 20 sectorsin the block 10 exist as erased storage units, 16 of which remain aserased storage units after the expansion of the file allocation table,only 4 of the erased storage units with data that differ from unuseddata must be programmed, 76. This corresponds to a ratio of 0.42% ofrequired programming operations compared to the usual method.

The features of the invention described with reference to theembodiments shown, such as inversion of the data to be written, 31, inFIGS. 6 a, 6 b, 7 a, and 7 b or programming of only one part of a sectorin a storage unit, 38 in FIG. 7 a, can also exist in other embodimentsof the invention, as shown in FIG. 5 a andor FIG. 5 b, for example,except when stated otherwise or when impossible for technical reasons.

In summary, by means of the invented method and the computer programproduct for executing the invented method, even without a memorycontroller to manage the flash memory, information is available aboutthe volume of data to be written to the flash memory. With theinformation on the volume of data to be written, the storage unitsrequired to write the data can be reserved as erased units until thedata are written, so that entire-block erasure operations can beeliminated. In addition, with the invented method, existing file systemsFAT/FAT32 can have unused areas of the sectors to be written with thesame value, which after inversion of the values of the unused areascorresponds to the value of erased unwritten storage cells in a block.Therefore, when writing sectors that contain unused data, there is noneed to program these unused data to the flash memory after they areinverted. In this way, the number of required erasure and programmingoperations is reduced, which increases the speed of writing data to theflash memory as well as the lifespan of the flash memory.

We claim: 1-10. (canceled)
 11. A method for managing a flash memory,wherein the flash memory is included in a communication device that canbe connected to a host, and wherein data to be stored are written formass storage on the flash memory the method comprising, dividing theflash memory into blocks, each block containing storage units, rewritinga storage unit if all storage units in the block of the storage unit tobe written to are erased before the storage unit is written to; managingthe flash memory to avoid erasure of and writing to at least some of thestorage unit; and writing to at least some of the erased and to bewritten storage units, whose data are different after rewriting comparedto before rewriting, with data to be stored without re-erasing.
 12. Themethod of claim 11 further comprising, wherein the communication deviceis connected to the host via an interface calling information about avolume of data to be transferred from the host to the flash memorythrough the communication device from the interface and managing theflash memory with information.
 13. The method of claim 12, comprisingtransferring the information about the data from the host to the flashmemory by a mass storage protocol.
 14. The method of claim 13, whereinthe mass storage protocol is a USB mass storage protocol.
 15. The methodof claim 12, comprising providing by the interface information about anumber of consecutive storage units to be written to, in which the datato be transferred (SSN, SS1N, SA, BE, S1N, S1ML) are to be written. 16.The method of claim 15, comprising providing, by the interfaceadditional information about a number of storage units following a firststorage unit.
 17. The method of claim 12, comprising inverting datatransferred from the host that are to be written to at least one storageunit of a block of the flash memory before the data is written to atleast one storage unit.
 18. The method of claim 17, comprising, formultiple storage units to be written to, in which the data to betransferred are to be written, inverting the data for all storage units.19. The method of claim 17, wherein unused bytes of data from the hostthat are to be written to the flash memory have the hexadecimal value0x00 when placed in the interface, and have the hexadecimal value 0xFFof an erased byte in the flash memory after inversion, and, instead ofwriting the hexadecimal value 0xFF into an erased storage unit, theerased storage unit is kept in its erased status without re-erasing. 20.A computer-readable storage medium include an executable program that,when executed, carries out the method of claim
 11. 21. A communicationdevice comprising the computer-readable storage medium of claim 20.